using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Infragistics.Win;
using Infragistics.Win.UltraWinGrid;
using Gratamira.CapaNegocio;

namespace Gratamira.Presentacion
{
    public partial class frmConGrupo : frmBaseConsulta, IBaseConsulta
    {
        public Grupo grupoSeleccionado;
        public frmConGrupo(string pAdministrador)
        {
            InitializeComponent();
            try
            {
                //Instanciar el Grupo asociando el dataset del grid
                grupoSeleccionado = new Grupo(base.dsGridDatos);
                configurarGrid();
                base.Administrador = pAdministrador;
                this.Text = Usuario.Empresa + " - Consulta de Grupos";
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocurrio un error al iniciar la pantalla : " + ex.Message);
                //this.Close();
            }
        }

        public override void consultar()
        {
            //Traer los grupos con el filtro
            grupoSeleccionado.leerGrupo(base.txtValor.Text, base.ddlFiltrar.SelectedIndex, base.dsGridDatos);
            base.grdValores.Focus();
            base.lblMensaje.Text = "Cantidad de valores consultados: " + base.grdValores.Rows.Count;
        }

        public override void verDetalle()
        {
            string grupoID = base.grdValores.ActiveRow.Cells[0].Value.ToString();
            frmMaeGrupo pantalla = new frmMaeGrupo(grupoID, estadoPantalla.Consultar);
            pantalla.ShowDialog();
        }

        public override void asignarValor()
        {
            grupoSeleccionado.GrupoID = base.grdValores.ActiveRow.Cells[0].Value.ToString();
            grupoSeleccionado.Nombre = base.grdValores.ActiveRow.Cells[1].Value.ToString();
            grupoSeleccionado.IndicadorComportamientoGrupo = base.grdValores.ActiveRow.Cells[2].Value.ToString();
            if (grupoSeleccionado.IndicadorComportamientoGrupo == "S")
            {
                grupoSeleccionado.Costo = Convert.ToDouble(base.grdValores.ActiveRow.Cells[3].Value.ToString());

                grupoSeleccionado.Precio1 = Convert.ToDouble(base.grdValores.ActiveRow.Cells[6].Value.ToString());
                grupoSeleccionado.Precio2 = Convert.ToDouble(base.grdValores.ActiveRow.Cells[7].Value.ToString());
                grupoSeleccionado.UnidadCompra = base.grdValores.ActiveRow.Cells[4].Value.ToString();
                grupoSeleccionado.UnidadManejo = base.grdValores.ActiveRow.Cells[5].Value.ToString();
            }
            
            this.Close();
        }

        public override void borrarRegistro()
        {
            //Grupo tGrupo = new Grupo();
            grupoSeleccionado.eliminarGrupo(base.grdValores.ActiveRow.Cells[0].Value.ToString());
            base.grdValores.ActiveRow.Delete(false);
        }

        public override void insertarRegistro()
        {
            frmMaeGrupo pantalla = new frmMaeGrupo("", estadoPantalla.Insertar);
            pantalla.ShowDialog();
        }

        public override void llenarDatosCombo()
        {
            base.ddlFiltrar.Items.Add("Nombre");
            base.ddlFiltrar.Items.Add("Codigo");
            base.ddlFiltrar.SelectedIndex = 0;
        }

        public override void  mostrarPrimerDetalle()
        {
            grupoSeleccionado.devolverProductosDelGrupo(base.grdValores.DisplayLayout.ActiveRow.Cells["Grupo"].Value.ToString(), base.dsGridDatos);
        }

        public override void mostrarSegundoDetalle()
        {
            grupoSeleccionado.leerSaldosDeProducto(base.grdValores.DisplayLayout.ActiveRow.Cells["Producto"].Value.ToString(), base.dsGridDatos);
        }

        public override void mostrarTercerDetalle()
        {
            //Pasar por parametro la bodega y el producto
            string tBodega = base.grdValores.DisplayLayout.ActiveRow.Cells["BodegaID"].Value.ToString();
            string tProducto = base.grdValores.DisplayLayout.ActiveRow.Cells["Producto"].Value.ToString();
            grupoSeleccionado.leerMovimiento(tBodega,tProducto, base.dsGridDatos);
        }

        private void configurarGrid()
        {
            //Dar formato al grid banda 0 - Grupo
            base.grdValores.DisplayLayout.Bands["Grupo"].Columns[1].Width = 400;
            base.grdValores.DisplayLayout.Bands["Grupo"].Columns[2].Hidden = true;
            base.grdValores.DisplayLayout.Bands["Grupo"].Columns[3].Hidden = true;
            base.grdValores.DisplayLayout.Bands["Grupo"].Columns[4].Hidden = true;
            base.grdValores.DisplayLayout.Bands["Grupo"].Columns[5].Hidden = true;
            base.grdValores.DisplayLayout.Bands["Grupo"].Columns[6].Hidden = true;
            base.grdValores.DisplayLayout.Bands["Grupo"].Columns[7].Hidden = true;

            //Cambiar aspecto banda 1 - Producto
            UltraGridBand banda1 = base.grdValores.DisplayLayout.Bands["GrupoProducto"];
            banda1.Columns["Grupo"].Hidden = true;
            //banda1.Columns["Producto"].Width = 70;
            banda1.Columns["Unidad"].Width = 70;
            banda1.Columns["Saldo"].CellAppearance.TextHAlign = HAlign.Right;
            banda1.Columns["Saldo"].Format = "#,###,##0.00";
            banda1.Columns["Estado"].Width = 60;

            banda1.Override.HeaderAppearance.BackColor = Color.LightBlue;

            //Cambiar aspecto banda 2 - Saldo
            UltraGridBand banda2 = base.grdValores.DisplayLayout.Bands["ProductoSaldo"];
            banda2.Columns["Existencia"].CellAppearance.TextHAlign = HAlign.Right;
            banda2.Columns["Existencia"].Format = "#,###,##0.00";
            banda2.Columns["Producto"].Hidden = true;
            // BorderStyleHeader applies to column captions in the card. 
            banda2.Override.BorderStyleHeader = UIElementBorderStyle.Raised;
            banda2.Override.HeaderAppearance.BackColor = Color.LightCoral;
            
            //Cambiar aspecto banda 3 - Movimiento
            UltraGridBand banda3 = base.grdValores.DisplayLayout.Bands["BodegaMovimiento"];
            banda3.Columns["BodegaID"].Hidden = true;
            banda3.Columns["Producto"].Hidden = true;
            banda3.Override.ExpansionIndicator = ShowExpansionIndicator.Never;

            // HeaderAppearance applies to column captions in the card. 
            //banda2.Override.HeaderAppearance.FontData.Bold = DefaultableBoolean.True;
        }

    }
}

